In general, tunneling in computer networks involves the encapsulation of transmissions or packets in a first communications protocol within transmissions or packets of a second communications protocol. The first communications protocol and the second communications protocol may be the same communications protocol or they may be different. Tunneling may be used in a computer network to convey a payload over an incompatible delivery network or to provide a secure path through an untrusted network.
Mobile IPv6 (MIPv6) is an implementation of IPv6 that supports the exchange of data in a packet switched internetwork. MIPv6 allows an IPv6 node to be mobile, i.e., arbitrarily move about an IPv6 network while maintaining existing connections as well as reachability using an IPv6 address. FIG. 1 illustrates an internetwork 100. Internetwork 100 includes a mobile node (MN) 105 that communicates to a host 110, for example. Communications between MN 105 and host 110 go through a home agent (HA) 115, with an access router AR1 120 serving to allow MN 105 to connect to HA 115. All traffic to and from MN 105 should go through HA 115. For example, traffic between MN 105 and a host 110 go through HA 115. Tunneling is used for all traffic flowing between MN 105 and HA 115 (shown as tunnel 130), including traffic that originated at sources other than HA 115 and destined for destinations other than HA 115.
FIG. 2 illustrates a typical IPv6 packet 200. IPv6 packet 200 includes a header 205 and a payload 210. Header 205 may be used in the delivery of IPv6 packet 200 to its destination as well as to provide identification information, such as version 215, traffic class 217, flow label 219, payload length 221, next header 223, transmission hop limit 225, and so forth. Header 205 also includes a source address 227 and a destination address 229. Source address may be an IPv6 address of a source of IPv6 packet 200, while destination address may be an IPv6 address of its intended destination.
FIG. 3 illustrates a tunnel packet 300. As discussed previously, the use of tunneling results in the encapsulation of a transmission or packet of a first communications protocol within a transmission or packet of a second communications protocol. Tunnel packet 300 includes an IPv6 packet 200 comprising header 205 and payload 210. Header 205 may be referred to as an inner header. Tunnel packet 300 also includes an outer header 305. Outer header 305 may include information such as version, traffic class, flow label, payload length, next header, transmission hop limit, and so forth. Furthermore, outer header 305 may also include a source address 310 and a destination address 315. Depending on the source of IPv6 packet 200, the source address and destination address contained in inner header 205 may be the same as source address 310 and destination address 315. Tunnel packet 300 may also include additional extension headers 320.
Given that a standard IPv6 header is 40 bytes (one byte is equal to eight bits) in size, tunnel packet 300 has at least 40 bytes dedicated to headers (assuming that outer header is also an IPv6 header). When large numbers of tunnel packets are transmitted between a source-destination pair, a significant amount of information transmitted is wasted in header overhead.
A prior art technique for reducing tunnel packet overhead is proposed in “IP Tunneling Optimization in a Mobile Environment,” by W. Haddad, M. Naslund, and P. Nikander, draft-haddad-mipshop-tunneling-optimization-01, Jul. 13, 2008. However, the proposed solution limits a care of address (CoA) to a single correspondent node (CN). Therefore, if a MN is communicating with multiple CNs, then multiple CoAs are required, which also require multiple binding cache (BC) entries in a HA. Multiple CoA address configurations and BC entries increases memory consumption and may counteract the benefits introduced through reduced packet size. Furthermore, multiple CoAs may also introduce increased accounting complexity.